﻿#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
//求⼀个整数存储在内存中的⼆进制中1的个数
//int count_one_of_bit(int m)
//{
//	int count = 0;
//	while (m)
//	{
//		if (m % 2 == 1)
//			count++;
//		m /= 2;
//	}
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = count_one_of_bit(n);
//	printf("%d\n", ret);
//
//	return 0;
//}
//
////-1
////100000000000000000000000000000000001
////111111111111111111111111111111111110
////111111111111111111111111111111111111
////32个1
////输入结果为0

//a=5
//a&1
//0000000000000000000000000000000000000101
//0000000000000000000000000000000000000001
//0000000000000000000000000000000000000001 --按位与后
//如果二进制最后一个数字为0，与1按位与后则为0
//如果二进制最后一个数字为1，与1按位与后则为1
//所以只要知道一个数字与1按位与后，则可得一个数字二进制的最后一位是什么
//求⼀个整数存储在内存中的⼆进制中1的个数
//int count_one_of_bit(int m)
//{
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if ((m >> i) & 1 == 1)
//			count++;
//	}
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = count_one_of_bit(n);
//	printf("%d\n", ret);
//
//	return 0;
//}

//
////改良
//int count_one_of_bit(int m)
//{
//	int count = 0;
//	while (m)
//	{
//		m = m & (m - 1);
//		count++;
//	}
//	
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = count_one_of_bit(n);
//	printf("%d\n", ret);
//
//	return 0;
//}



////编写代码将13⼆进制序列的第5位修改为1，然后再改回0
//int main()
//{
//	int n = 13;
//	//00000000000000000000000000001101
//	//00000000000000000000000000010000
//	//1<<(5-1)
//	
//	//将n的第5位改成1
//	n = n | (1 << 4);
//	printf("%d", n);
//
//	//将n的第5位改成0
//	n = n & (~(1 << 4));
//	printf("%d", n);
//
//	
//	return 0;
//}